home *** CD-ROM | disk | FTP | other *** search
/ The Best of Windows 95 Shareware / The Best of Windows 95 Shareware (Wayzata Technology)(1996).ISO / mac / Multimed / mpegw32h / MPEGPLAY.MS_ / MPEGPLAY.MS
Text File  |  1994-09-25  |  8KB  |  295 lines

  1. '**************************************************************************
  2. '*                       WinG Setup Program
  3. '**************************************************************************
  4.  
  5. '******$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8.  
  9. ''Dialog ID's
  10. CONST WELCOME       = 100
  11. CONST ASKQUIT       = 200
  12. CONST DESTPATH      = 300
  13. CONST DESTPATH2     = 301
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST CHECK         = 2500
  19. CONST BADPATH       = 6400
  20. CONST RESTART       = 1000
  21.  
  22. CONST LOGO = 1      ''Bitmap ID
  23.  
  24. GLOBAL FILEDIALOG   ''File path dialog ID
  25. GLOBAL DEST$        ''Default destination directory.
  26. GLOBAL CHECKSTATES$ ''Dialog list symbol names
  27. GLOBAL WINDRIVE$    ''Windows drive letter.
  28. GLOBAL TMPDEST$     ''tmpfile destination
  29.  
  30. GLOBAL bInstallDVA%
  31.  
  32. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  33. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  34. DECLARE SUB UpdateWinG32 (szOrig$) 
  35.  
  36. '***** DECLARE the setup helper dll functions
  37. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  38. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  39. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  40. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  41. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  42. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  43.  
  44. '***** Lets get to it
  45. INIT:
  46.     bInstallDVA% = 0
  47.     
  48.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  49.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  50.  
  51.     SetBitmap CUIDLL$, LOGO
  52.     SetTitle "MPEG Player Setup"
  53.     
  54.     
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.     szInf$ = GetSymbolValue("STF_CWDDIR") + "mpegplay.inf"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61. WELCOME:
  62.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  63.     IF sz$ = "CONTINUE" THEN
  64.     UIPop 1
  65.     ELSE
  66.     GOSUB ASKQUIT
  67.     GOTO WELCOME
  68.     END IF
  69.  
  70. '***** Find out if they want to install WinG as well as the MPEG Player
  71.  
  72. '    CHECKSTATES$ = "CheckItemsIn"
  73. '    AddListItem CHECKSTATES$, "ON"
  74.  
  75. 'CHECK:
  76. '    sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
  77. '    IF sz$ = "CONTINUE" THEN
  78. '    UIPop 1
  79. '    ELSE
  80. '    GOSUB ASKQUIT
  81. '    GOTO CHECK
  82. '    END IF
  83.  
  84. '***** If they want WinG then we better install it    
  85.  
  86. '    CHECKSTATES$ = "CheckItemsOut"
  87. '    IF GetListItem(CHECKSTATES$, WING_RUNFILES) = "ON" THEN
  88.  
  89.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  90.     DEST$ = GetWindowsSysDir
  91.     
  92.     AddSectionFilesToCopyList "wing", SrcDir$, DEST$
  93.     
  94.     '
  95.     ' only use DVA on Windows 3.x
  96.     '
  97.     IF OnWin3x() = 1 THEN
  98.         AddSectionFilesToCopyList "dva", SrcDir$, DEST$
  99.         IF VflatdPresent() = 0 THEN
  100.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  101.         bInstallDVA% = 1
  102.         END IF
  103.     END IF
  104.     
  105.     DEST$ = GetRealWindowsSysDir
  106.     
  107.     AddSectionFilesToCopyList "wing32", SrcDir$, DEST$
  108.     Dest1$ = MakePath(DEST$,"wing32.dll")
  109.     Dest2$ = MakePath(DEST$,"wing32.xxx")
  110.     RenameFilePlease Dest1$,Dest2$
  111.     
  112.     CopyFilesInCopyList
  113.     
  114.     UpdateWinG32 GetRealWindowsSysDir()
  115.  
  116. '    END IF
  117.  
  118. '***** Now install the actual mpeg player files        
  119.  
  120.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  121.     DEST$ = WINDRIVE$ + ":\WIN32APP\MPEGPLAY"
  122.     FILEDIALOG = DESTPATH2
  123.     GOSUB GETPATH
  124.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  125.     CreateDir DEST$, cmoVital
  126.  
  127.     AddSectionFilesToCopyList "mpegplay", SrcDir$, DEST$
  128.     CopyFilesInCopyList
  129.     
  130. '***** Make the ProgMan Group then add the icons        
  131.  
  132.     proggroup$ = "MPEGPLAY"
  133.     CreateProgmanGroup proggroup$, "", cmoNone
  134.     
  135.     path$ = MakePath( DEST$, "mpegplay.exe" )
  136.     CreateProgmanItem proggroup$, "MPEGPLAY V1.65", path$, "", cmoOverwrite
  137.     
  138.     path$ = MakePath( DEST$, "mpegply.exe" )
  139.     CreateProgmanItem proggroup$, "MPEGPLAY V1.65 NO WING", path$, "", cmoOverwrite
  140.  
  141. QUIT:
  142.     ON ERROR GOTO ERRQUIT
  143.  
  144.     IF ERR = 0 THEN
  145.     dlg% = EXITSUCCESS
  146.     ELSEIF ERR = STFQUIT THEN
  147.     dlg% = EXITQUIT
  148.     ELSE
  149.     dlg% = EXITFAILURE
  150.     END IF
  151.  
  152. QUITL1:
  153. '**** If we installed DVA (ie it was not there before) then suggest that we restart
  154.     if dlg% = EXITSUCCESS AND bInstallDVA% = 1 then
  155.     sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
  156.     UIPop 1
  157.     IF sz$ = "CONTINUE" THEN
  158.         rc% = RestartWindows
  159.     ENDIF
  160.     endif
  161.  
  162.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  163.     IF sz$ = "REACTIVATE" THEN
  164.     GOTO QUITL1
  165.     END IF
  166.     UIPop 1
  167.     
  168. '**** This is where we should end up if everything went OK.
  169.     END
  170.  
  171. '**** Blast it! Something stuffed up.
  172. ERRQUIT:
  173.     i% = DoMsgBox("Setup sources were corrupted, email michael@ecel.uwa.edu.au", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  174.     END
  175.  
  176.  
  177. BADPATH:
  178.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  179.     IF sz$ = "REACTIVATE" THEN
  180.     GOTO BADPATH
  181.     END IF
  182.     UIPop 1
  183.     RETURN
  184.  
  185.  
  186. ASKQUIT:
  187.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  188.  
  189.     IF sz$ = "EXIT" THEN
  190.     UIPopAll
  191.     ERROR STFQUIT
  192.     ELSEIF sz$ = "REACTIVATE" THEN
  193.     GOTO ASKQUIT
  194.     ELSE
  195.     UIPop 1
  196.     END IF
  197.     RETURN
  198.  
  199. '**** Prompt the user with a dialog via which they can change the installation path
  200. '**** for the MPEG player.
  201. GETPATH:
  202.     SetSymbolValue "EditTextIn", DEST$
  203.     SetSymbolValue "EditFocus", "END"
  204.  
  205. GETPATHL1:
  206.     sz$ = UIStartDlg(CUIDLL$, FILEDIALOG, "FEditDlgProc", APPHELP, HELPPROC$)
  207.     DEST$ = GetSymbolValue("EditTextOut")
  208.  
  209.     IF sz$ = "CONTINUE" THEN
  210.     IF IsDirWritable(DEST$) = 0 THEN
  211.         GOSUB BADPATH
  212.         GOTO GETPATHL1
  213.     END IF
  214.     UIPop 1
  215.     ELSEIF sz$ = "REACTIVATE" THEN
  216.     GOTO GETPATHL1
  217.     ELSEIF sz$ = "BACK" THEN
  218.     UIPop 1
  219.     GOTO WELCOME
  220.     ELSE
  221.     GOSUB ASKQUIT
  222.     GOTO GETPATH
  223.     END IF
  224.  
  225.     RETURN
  226.  
  227. '**
  228. '** Purpose:
  229. '**     Appends a file name to the end of a directory path,
  230. '**     inserting a backslash character as needed.
  231. '** Arguments:
  232. '**     szDir$  - full directory path (with optional ending "\")
  233. '**     szFile$ - filename to append to directory
  234. '** Returns:
  235. '**     Resulting fully qualified path name.
  236. '*************************************************************************
  237. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  238.     IF szDir$ = "" THEN
  239.     MakePath = szFile$
  240.     ELSEIF szFile$ = "" THEN
  241.     MakePath = szDir$
  242.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  243.     MakePath = szDir$ + szFile$
  244.     ELSE
  245.     MakePath = szDir$ + "\" + szFile$
  246.     END IF
  247. END FUNCTION
  248.  
  249.  
  250. '**** Really....
  251.  
  252. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  253.     szBuf$ = string$(260, 32)
  254.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  255.     IF cbBuf% = 0 THEN
  256.     ERROR STFERR
  257.     ELSE
  258.     IF cbBuf% > 259 THEN
  259.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  260.         ERROR STFERR
  261.     END IF
  262.     szBuf$ = RTRIM$(szBuf$)
  263.     IF MID$(szBuf$, 1, 1) = "\" THEN
  264.         szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  265.     ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  266.         szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  267.     END IF
  268.     IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  269.         szBuf$ = szBuf$ + "\"
  270.     END IF
  271.     GetRealWindowsSysDir = szBuf$
  272.     END IF
  273.  
  274.     szBuf$ = ""
  275. END FUNCTION
  276.  
  277. SUB UpdateWinG32 (szOrig$) STATIC 
  278.     '
  279.     ' Here we check the version ourselves of wing32.dll, since 
  280.     ' we can't get version checking for Win32 apps from Win16
  281.     ' Wow a useful comment at last!
  282.     '
  283.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  284.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  285.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  286.     RemoveFile FileOrig$, cmoForce
  287.     ELSE
  288.     RemoveFile FileNew$, cmoForce           ' get rid of new file
  289.     RenameFilePlease FileOrig$,FileNew$     ' put back old file
  290.     END IF
  291. END SUB
  292.  
  293. ' How about a decent setup kit!!
  294.  
  295.